/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.flowernet.dao;

import br.com.flowernet.entity.Cliente;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author Felipe
 */
@Stateless
public class ClienteDAO {

    @PersistenceContext(name = "FlowerNetPU")
    private EntityManager em;

    public Long addCliente(Cliente cliente) {
        em.persist(cliente);
        return cliente.getIdCliente();
    }

    public Long removeCliente(Cliente cliente) {
        cliente = em.getReference(Cliente.class, cliente.getIdCliente());
        em.remove(cliente);
        return cliente.getIdCliente();
    }

    public Long updateCliente(Cliente cliente) {
        em.merge(cliente);
        return cliente.getIdCliente();
    }

    public void removeClienteById(long idCliente) {
        Cliente cliente = em.find(Cliente.class, idCliente);
        em.remove(cliente);
    }

    public List<Cliente> getAllCliente() {

        List<Cliente> clientes = new LinkedList<Cliente>();
        
        String jpql = "SELECT A FROM Cliente A";
        Query qr = em.createQuery(jpql);
        clientes = qr.getResultList();
        return clientes;

    }
    
      public Cliente getCliente (long idCliente) {
        
        Cliente toReturn = em.find(Cliente.class, idCliente);
        return toReturn;
    }
      
     public Cliente getClienteEmail(String email) {
        Cliente cliente = new Cliente();
        String jpql = "SELECT C FROM Cliente C where C.loginEmail = ? ";
        Query qr = em.createQuery(jpql);
        qr.setParameter(1, email);
        cliente = (Cliente) qr.getSingleResult();
        
        return cliente;
    }
}
